package de.dis2011;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Kleine Helferklasse zum Einlesen von Formulardaten
 */
public class FormUtil
{
    /**
     * Liest einen String vom standard input ein
     * 
     * @param label
     *            Zeile, die vor der Eingabe gezeigt wird
     * @return eingelesene Zeile
     */
    public static String readString(String label)
    {
        String ret = null;
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

        try
        {
            System.out.print(label + ": ");
            ret = stdin.readLine();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return ret;
    }

    /**
     * Liest einen Integer vom standard input ein
     * 
     * @param label
     *            Zeile, die vor der Eingabe gezeigt wird
     * @return eingelesener Integer
     */
    public static int readInt(String label)
    {
        int ret = 0;
        boolean finished = false;

        while (!finished)
        {
            String line = readString(label);

            try
            {
                ret = Integer.parseInt(line);
                finished = true;
            }
            catch (NumberFormatException e)
            {
                System.err.println("Ungültige Eingabe: Bitte geben Sie eine Zahl an!");
            }
        }

        return ret;
    }

    /**
     * Liest ein Datum vom standard input im Format dd.MM.yyyy ein
     * 
     * @param label
     *            Zeile, die vor der Eingabe gezeigt wird
     * @return eingelesenes Datum
     */
    public static Date readDate(String label) {
        SimpleDateFormat parser = new SimpleDateFormat("dd.MM.yyyy");
        Date ret = null;
        boolean finished = false;

        while(!finished) {
            String line = readString(label);
                        
            try {
                ret = parser.parse(line);
                finished = true;
            } catch (ParseException e) {
                System.err.println("Ungültige Eingabe: Bitte geben Sie ein Datum im Format dd.MM.yyyy an!");
            }
        }
        
        return ret;
    }

}
